package com.qsxc.system.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author
 * @desc 使用redis进行分布式锁
 * 暂不可用 @see https://helpcdn.aliyun.com/document_detail/92942.html?spm=a2c4g.11186623.6.631.2f1e63cdEFpu8h
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RedisLock {
    /**
     * @return
     */
    String field() default "";

    /**
     * redis锁分组名称，该参数设置后，可以控制多个接口公用相同的锁
     */
    String lockGroupName() default "";

    /**
     * redis锁 key 支持spel表达式
     */
    String key() default "";

    /**
     * 过期秒数,默认为30秒
     *
     * @return 轮询锁的时间
     */
    int expire() default 30;

    /**
     * 超时时间单位
     *
     * @return 秒
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;
}
